1. Objective-C内存管理

  2. NSPredicate

    1. 前言:当你在编写软件时,需要获取一个对象集合,并通过某些已知条件计算该集合的值。这时你需要保留符合某个条件的对象,删除哪些不满足条件的对象,从而提供一些有意义的对象。(本部分讲的是类过滤器)
    2. cocoa提供一个NSPredicate类,它用于指定过滤条件。可以创建NSPredicate对象,通过该对象准确地描述所需的条件,对每个对象通过谓词进行筛选,判断它们是否与条件相匹配。
    3. cocoa用NSPredicate描述查询的方式,原理类似于在数据库中进行查询。这里可以将NSPredicate看作是另一种间接的操作方式。通过交换谓词对象,可以使用通用代码对数据进行过滤,而不必对相关田间进行硬编码。
    4. 下面我们介绍如何创建谓词:
      • 有两种基本的方式来创建NSPredicate对象:a)创建多个对象,并将它们组合起来。这种方式需要使用大量的代码,如果正在构建通用用户接口来指定查询,这种方式比较简单;b)查询代码中的字符串,这种方式比较简单(对初学者来说)。
      • 这里着重介绍字符串查询谓词。先看一点儿代码:
        Car *car;
        car= makeCar(@"hebie",@"common",@"CRX",1988,2,110000,52);
        [garage addCar:car];
        //NSPredicate
        NSPredicate *predicate;
        predicate=[NSPredicate predicateWithFormat: @"name == 'hebie'"];
      • 计算谓词:上述的代码创建了一个谓词,接下来通过某个对象计算谓词:
      •  BOOL match = [predicate evaluateWithObject: car];
         NSLog(@"%s", match? "YES":"no");
数组的过滤方法:
      • 有一个特殊的方法可以实现这个功能,在顺序容器内过滤:
      • NSArray *results;
        results = [cars filteredArrayUsingPredicate: predicate];